//package com.dong.vedio;
//
//import jakarta.annotation.PostConstruct;
//import jakarta.annotation.PreDestroy;
//import org.springframework.stereotype.Component;
//import java.net.DatagramPacket;
//import java.net.DatagramSocket;
//import java.net.InetSocketAddress;
//import java.util.concurrent.ExecutorService;
//import java.util.concurrent.Executors;
//
//@Component
//public class UdpVideoReceiver {
//    // UDP监听端口
//    private static final int UDP_PORT = 5001;
//    // 视频帧缓冲区大小（根据实际帧大小调整）
//    private static final int BUFFER_SIZE = 1024 * 1024; // 1MB
//    private DatagramSocket datagramSocket;
//    private ExecutorService executor;
//    private boolean running = false;
//
//    @PostConstruct
//    public void start() {
//        try {
//            datagramSocket = new DatagramSocket(new InetSocketAddress(UDP_PORT));
//            running = true;
//            executor = Executors.newSingleThreadExecutor();
//            executor.execute(this::receiveUdpPackets);
//            System.out.println("UDP视频接收器已启动，监听端口: " + UDP_PORT);
//        } catch (Exception e) {
//            System.err.println("启动UDP接收器失败: " + e.getMessage());
//        }
//    }
//
//    private void receiveUdpPackets() {
//        byte[] buffer = new byte[BUFFER_SIZE];
//        while (running) {
//            try {
//                DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
//                datagramSocket.receive(packet); // 阻塞等待接收UDP数据包
//
//                // 提取有效数据（去除缓冲区中未使用的部分）
//                byte[] frameData = new byte[packet.getLength()];
//                System.arraycopy(buffer, 0, frameData, 0, packet.getLength());
//
//                // 通过WebSocket推送到网页
//                VideoWebSocketHandler.broadcastFrame(frameData);
//            } catch (Exception e) {
//                if (running) {
//                    System.err.println("UDP接收错误: " + e.getMessage());
//                }
//            }
//        }
//    }
//
//    @PreDestroy
//    public void stop() {
//        running = false;
//        if (datagramSocket != null && !datagramSocket.isClosed()) {
//            datagramSocket.close();
//        }
//        if (executor != null && !executor.isTerminated()) {
//            executor.shutdown();
//        }
//        System.out.println("UDP视频接收器已停止");
//    }
//}
